package com.fowo.api.model.ship.plans.sub;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 发货计划单子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class ShipPlansSubImportPo {

  /** 所属发货计划单 */
  @ExcelProperty("所属发货计划单")
  private String parentShipPlansCreateBatchNumber;

  @ExcelIgnore
  @Schema(title = "所属发货计划单")
  private String parentShipPlans;

  /** 计划编号 */
  @ExcelProperty("计划编号")
  private String orderSn;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String msku;

  /** FNSKU */
  @ExcelProperty("FNSKU")
  @Size(max = 50, message = "FNSKU长度不能超过50")
  private String fnsku;

  /** ASIN */
  @ExcelProperty("ASIN")
  @Size(max = 50, message = "ASIN长度不能超过50")
  private String asin;

  /** 父ASIN */
  @ExcelProperty("父ASIN")
  @Size(max = 50, message = "父ASIN长度不能超过50")
  private String parentasin;

  /** 产品 */
  @ExcelProperty("产品")
  @Size(max = 500, message = "产品长度不能超过500")
  private String productIdName;

  @ExcelIgnore
  @Schema(title = "产品")
  private String productId;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String shopIdShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String shopId;

  /** 计划发货量 */
  @ExcelProperty("*计划发货量")
  @NotBlank(message = "计划发货量不能为空")
  @LongString(message = "计划发货量数值格式不正确", label = "计划发货量")
  private String plannedShipment;

  /** 总计发货量 */
  @ExcelProperty("总计发货量")
  @LongString(message = "总计发货量数值格式不正确", label = "总计发货量")
  private String totalShipment;

  /** 差异量 */
  @ExcelProperty("差异量")
  @LongString(message = "差异量数值格式不正确", label = "差异量")
  private String differenceQuantity;

  /** 运输方式 */
  @ExcelProperty("运输方式")
  private String typeOfShipping;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String logisticsBusinessIdName;

  @ExcelIgnore
  @Schema(title = "物流商")
  private String logisticsBusinessId;

  /** 物流渠道 */
  @ExcelProperty("物流渠道")
  @Size(max = 50, message = "物流渠道长度不能超过50")
  private String logisticsChannelName;

  @ExcelIgnore
  @Schema(title = "物流渠道")
  private String logisticsChannel;

  /** 预计到货时间 */
  @ExcelProperty("预计到货时间")
  @DateString(message = "预计到货时间不是有效的日期格式")
  private String estimatedTimeOfArrival;

  /** 发货仓库 */
  @ExcelProperty("发货仓库")
  @Size(max = 50, message = "发货仓库长度不能超过50")
  private String deliveryWarehouseIdName;

  @ExcelIgnore
  @Schema(title = "发货仓库")
  private String deliveryWarehouseId;

  /** 包装类型 */
  @ExcelProperty("包装类型")
  private String packagingType;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 状态 */
  @ExcelProperty("状态")
  @EnumsString(
    value = { "待处理", "已处理" },
    message = "状态只能是“待处理”, “已处理”中的一个"
  )
  private String state;

  /** 物流预计时效 */
  @ExcelProperty("物流预计时效")
  @Size(max = 50, message = "物流预计时效长度不能超过50")
  private String estimatedTimeOfLogistics;

  /** 箱规名称 */
  @ExcelProperty("箱规名称")
  @Size(max = 50, message = "箱规名称长度不能超过50")
  private String boxName;

  /** 单箱数量（PCS） */
  @ExcelProperty("单箱数量（PCS）")
  @IntegerString(
    message = "单箱数量（PCS）数值格式不正确",
    label = "单箱数量（PCS）"
  )
  private String perCarton;

  /** 箱数 */
  @ExcelProperty("箱数")
  @IntegerString(message = "箱数数值格式不正确", label = "箱数")
  private String cartonNumbers;

  /** 发货时间 */
  @ExcelProperty("发货时间")
  @DateString(message = "发货时间不是有效的日期格式")
  private String scheduledDeliveryTime;

  /** 发货仓库店铺 */
  @ExcelProperty("发货仓库店铺")
  @Size(max = 50, message = "发货仓库店铺长度不能超过50")
  private String deliveryWarehouseStoreIdShopName;

  @ExcelIgnore
  @Schema(title = "发货仓库店铺")
  private String deliveryWarehouseStoreId;

  /** 发货仓库FNSKU */
  @ExcelProperty("发货仓库FNSKU")
  @Size(max = 50, message = "发货仓库FNSKU长度不能超过50")
  private String deliveryWarehouseStoreFnskuFnsku;

  @ExcelIgnore
  @Schema(title = "发货仓库FNSKU")
  private String deliveryWarehouseStoreFnsku;

  /** 锁定仓位 */
  @ExcelProperty("锁定仓位")
  @Size(max = 50, message = "锁定仓位长度不能超过50")
  private String lockBinStorageBin;

  @ExcelIgnore
  @Schema(title = "锁定仓位")
  private String lockBin;

  /** FBA库存预测 */
  @ExcelProperty("FBA库存预测")
  @IntegerString(message = "FBA库存预测数值格式不正确", label = "FBA库存预测")
  private String fbaForecastingInventoryTechnique;

  /** 可用量 */
  @ExcelProperty("可用量")
  @IntegerString(message = "可用量数值格式不正确", label = "可用量")
  private String quantityAvailable;

  /** 待检待上架量 */
  @ExcelProperty("待检待上架量")
  @IntegerString(message = "待检待上架量数值格式不正确", label = "待检待上架量")
  private String quantityTest;

  /** 待到货量 */
  @ExcelProperty("待到货量")
  @IntegerString(message = "待到货量数值格式不正确", label = "待到货量")
  private String quantityAog;

  /** 是否锁定库存 */
  @ExcelProperty("是否锁定库存")
  @BooleanString(message = "是否锁定库存格式不正确，请使用“是”，“否”")
  private String isLock;

  /** 是否加急 */
  @ExcelProperty("是否加急")
  @BooleanString(message = "是否加急格式不正确，请使用“是”，“否”")
  private String isUrgent;

  /** 货件号 */
  @ExcelProperty("货件号")
  @Size(max = 50, message = "货件号长度不能超过50")
  private String shipmentOrder;

  /** 申报量 */
  @ExcelProperty("申报量")
  @IntegerString(message = "申报量数值格式不正确", label = "申报量", min = 0)
  private String shipmentNum;

  /** 发货单号 */
  @ExcelProperty("发货单号")
  @Size(max = 50, message = "发货单号长度不能超过50")
  private String deliveryOrder;

  /** 关联量 */
  @ExcelProperty("关联量")
  @IntegerString(message = "关联量数值格式不正确", label = "关联量", min = 0)
  private String deliverNum;

  /** 钩稽字段 */
  @ExcelProperty("钩稽字段")
  @IntegerString(
    message = "钩稽字段数值格式不正确",
    label = "钩稽字段",
    min = 0
  )
  private String planNumHidden;

  /** 包装规格 */
  @ExcelProperty("包装规格")
  @Size(max = 50, message = "包装规格长度不能超过50")
  private String specifications;

  /** 箱规 */
  @ExcelProperty("箱规")
  @Size(max = 50, message = "箱规长度不能超过50")
  private String boxgauge;

  /** CBM(m2) */
  @ExcelProperty("CBM(m2)")
  @DecimalString(message = "CBM(m2)小数格式不正确", label = "CBM(m2)")
  private String cbm;

  /** 体积重(kg) */
  @ExcelProperty("体积重(kg)")
  @DecimalString(message = "体积重(kg)小数格式不正确", label = "体积重(kg)")
  private String volumeweight;

  /** 单品净重(g) */
  @ExcelProperty("单品净重(g)")
  @DecimalString(message = "单品净重(g)小数格式不正确", label = "单品净重(g)")
  private String itemweight;

  /** 单品毛重(g) */
  @ExcelProperty("单品毛重(g)")
  @DecimalString(message = "单品毛重(g)小数格式不正确", label = "单品毛重(g)")
  private String itemgrossweight;

  /** 单箱重量(kg) */
  @ExcelProperty("单箱重量(kg)")
  @DecimalString(message = "单箱重量(kg)小数格式不正确", label = "单箱重量(kg)")
  private String singleitemweight;

  /** 单箱毛重 */
  @ExcelProperty("单箱毛重")
  @DecimalString(message = "单箱毛重小数格式不正确", label = "单箱毛重")
  private String singleboxweight;

  /** 总净重 */
  @ExcelProperty("总净重")
  @DecimalString(message = "总净重小数格式不正确", label = "总净重")
  private String totalweight;

  /** 生成货件 */
  @ExcelProperty("生成货件")
  @EnumsString(
    value = { "否", "是" },
    message = "生成货件只能是“否”, “是”中的一个"
  )
  private String generateshipment;

  /** fnskuname */
  @ExcelProperty("fnskuname")
  @Size(max = 50, message = "fnskuname长度不能超过50")
  private String fnskuname;

  /** 标题 */
  @ExcelProperty("标题")
  @Size(max = 50, message = "标题长度不能超过50")
  private String title;
}
